﻿#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int DataType;

typedef struct Stack
{
	DataType* _a;		// 数据存储
	size_t _top;		// 栈顶下标
	size_t _capacity;	// 可用容量
}Stack;


// 栈-工具函数
// 容量检测 - 扩容
void CheckCapacity(Stack* stk);

// 栈-基本操作函数
// 初始化栈
void StackInit(Stack* stk);
// 入栈
void StackPush(Stack* stk, DataType data);
// 出栈
DataType StackPop(Stack* stk);
// 获取栈顶元素
DataType StackTop(Stack* stk);
// 获取栈中有效元素个数
size_t StackSize(Stack* stk);
// 栈是否为空 不空返回0 为空返回非0
int StackEmpty(Stack* stk);
// 销毁栈
void StackDestory(Stack* stk);